/* eslint-disable @typescript-eslint/explicit-function-return-type */
import { app } from 'electron'
// 通过检查更新包中的文件类型来判断更新类型
export const checkUpdateType = (updateInfo) => {
  // 存在.blockmap文件则为增量更新
  const isIncremental = updateInfo.files.some((file) => file.url.endsWith('.blockmap'))
  // 存在完整安装包则为全量更新
  const isFull = updateInfo.files.some(
    (file) => file.url.endsWith('.exe') || file.url.endsWith('.dmg')
  )

  return {
    isIncremental,
    isFull,
    version: updateInfo.version
  }
}

// 通过比较当前Electron版本与更新包的Electron版本差异判断
export const shouldFullUpdate = (newVersion) => {
  const currentMajor = app.getVersion().split('.')[0]
  const newMajor = newVersion.split('.')[0]
  return currentMajor !== newMajor
}


// 结合文件检测和版本比对的完整方案
export const determineUpdateType = (updateInfo) => {
  const fileCheck = checkUpdateType(updateInfo)
  const versionCheck = shouldFullUpdate(updateInfo.version)
  return {
    // 版本变化强制全量更新
    isForcedFull: versionCheck,
    // 实际可用的更新类型
    availableType: versionCheck ? 'full' : fileCheck.isIncremental ? 'incremental' : 'full',
    version: updateInfo.version
  }
}